package com.clps.algorithm03.选择排序;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class demo01 {
    public static void main(String[] args) {
        int[] arr = {11,33,44,22};
        demo01 demo01 = new demo01();
   //     demo01.selectSort(arr);
        demo01.selectSort02(arr);
    }

    public void selectSort(int[] nums){
        int length = nums.length;
        for (int i = 0; i <length-1 ; i++) {
            int minIndex = i;//剩余序列中的最小元素的下表
            for (int j = i+1; j <length ; j++) {
                if(nums[j] <nums[minIndex]){
                    minIndex = j;
                }
                System.out.println("交换位置之前"+Arrays.toString(nums));
                //如果又最小的元素就交换
                if(i!=minIndex){
                    swap1(nums,i,minIndex);
                    System.out.println("交换位置在之后"+Arrays.toString(nums));
                }
            }
        }
    }


    public  void selectSort02(int[] nums){
        int length = nums.length;
        System.out.println("交换位置之前"+Arrays.toString(nums));
        for (int i = 0; i <length-1 ; i++) {
            int minindex = i;//剩余序列中最小的元素下标.
            //查找剩余序列中最小的元素的下标
            for (int j = i+1; j <length ; j++) {
                if(nums[j] <nums[minindex]){
                    minindex = j;
                }
                System.out.println("交换位置之前"+Arrays.toString(nums));
                //如果有最小的元素就交换
                if(i!=minindex){
                    swap1(nums,i,minindex);
                    System.out.println("交换位置之============"+Arrays.toString(nums));
                }
            }

        }
    }


    private void swap1(int[] nums, int i, int minIndex) {
        int tmp = nums[minIndex];
        nums[minIndex] = nums[i];
        nums[i] = tmp;
    }


}
